home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-08-01 | 85.8 KB | 1,940 lines |
- NEDIT 4.0.3
-
- NEdit is a GUI (Graphical User Interface) style text editor for programs and
- plain-text files. Users of Macintosh and MS Windows based text editors will
- find NEdit a familiar and comfortable environment. NEdit provides all of the
- standard menu, dialog, editing, and mouse support, as well as all of the
- standard shortcuts to which the users of modern GUI based environments are
- accustomed. For users of older style Unix editors, welcome to the world of
- mouse-based editing!
-
- NEdit is free, available in source and binary form for Silicon Graphics, HP,
- DEC, IBM, Sun, and Linux systems, as well as for VAX and Alpha VMS. Executables
- for non-supported systems are also available. Porting to other Motif platforms
- has generally been easy.
-
-
- INSTALLING NEDIT
-
- NEdit is a single stand-alone executable file which can be installed by simply
- copying the appropriate executable "nedit" for your system. Both sources
- and executables are available via anonymous ftp to ftp.fnal.gov in the
- /pub/nedit directory. The optional "nc" (NEdit Client) program is also
- available for users who want to run nedit in client/server mode.
-
-
- GETTING STARTED
-
- If you are new to X windows, you may need some help setting up your X
- environment or using X across a network. If you have used other Motif
- programs before, you can probably use NEdit without much instruction.
-
- Start NEdit by typing nedit. You can specify a file or several files to edit
- on the command line, but you can also open them from inside NEdit. If you
- don't specify a file name to edit, NEdit will open a window titled "Untitled".
- You can create a new file by typing into this window and choosing Save or
- Save As... from the File menu. There is no "main window" in NEdit, all
- editor windows are equivalent, and NEdit remains running as long as at least
- one window is open.
-
- Most editor commands are available from the pulldown menus (File, Edit, Search,
- etc.). If you make a mistake, any editing operation can be undone by
- selecting Undo from the Edit menu. Online help is also available through the
- Help menu on the right-hand side of the menu bar.
-
- To open an existing file once nedit is running, choose Open... from the File
- menu. Select the file that you want to open in the pop-up dialog that
- appears, and click on OK. You may have any number of files open at the same
- time. Each file will appear in its own editor window. Using Open..., rather
- than re-typing the nedit command and running additional copies of NEdit, is
- both more memory-efficient, and allows NEdit to better manage your files.
-
- As you become more familiar with NEdit, you can use the control and function
- keys shown on the right side of the pull-down menus, as a substitute for
- selecting items with the mouse.
-
- Dialogs are also streamlined so you can enter information quickly and without
- using the mouse. Keyboard focus is automatically directed to the first field
- in a dialog when the dialog pops up. To move the keyboard focus around a
- dialog, use the tab and arrow keys. One of the buttons in a dialog is usually
- drawn with a thick, indented, outline. This button can be activated by
- pressing return or enter. For example, to replace the string "thing" with
- "things" type:
-
- <ctrl-r>thing<tab>things<return>
-
- To open a file named "whole_earth.c", type:
-
- <ctrl-o>who<return>
-
- (how much of the filename you need to type depends on the other files in the
- directory). See the section titled KEYBOARD SHORTCUTS for more information.
-
-
- SELECTING, CUTTING, and PASTING
-
- NEdit has two general types of selections, primary (highlighted text), and
- secondary (underlined text). Selections can cover either a simple range of text
- between two points in the file, or they can cover a rectangular area of the
- file. Rectangular selections are only useful with non-proportional (fixed
- spacing) fonts.
-
- To select text for copying, deleting, or replacing, press the left mouse button
- with the pointer at one end of the text you want to select, and drag it to the
- other end. The text will become highlighted. To select a whole word, double
- click (click twice quickly in succession). Double clicking and then dragging
- the mouse will select a number of words. Similarly, you can select a whole
- line or a number of lines by triple clicking or triple clicking and dragging.
- Quadruple clicking selects the whole file. After releasing the mouse button,
- you can still adjust a selection by holding down the shift key and dragging on
- either end of the selection. To delete the selected text, press delete or
- backspace. To replace it, begin typing.
-
- To select a rectangle or column of text, hold the Ctrl key while dragging the
- mouse. Rectangular selections can be used in any context that normal
- selections can be used, including cutting and pasting, filling, shifting,
- dragging, and searching. Operations on rectangular selections automatically
- fill in tabs and spaces to maintain alignment of text within and to the right
- of the selection. Note that the interpretation of rectangular selections by
- Fill Paragraph is slightly different from that of other commands, the section
- titled "TEXT FILLING" has details.
-
- The middle mouse button can be used to make an additional selection (called the
- secondary selection). As soon as the button is released, the contents of this
- selection will be copied to the insert position of the window where the mouse
- was last clicked (the destination window). This position is marked by a caret
- shaped cursor when the mouse is outside of the destination window. If there is
- a (primary) selection, adjacent to the cursor in the window, the new text will
- replace the selected text. Holding the shift key while making the secondary
- selection will move the text, deleting it at the site of the secondary
- selection, rather than copying it.
-
- Selected text can also be dragged to a new location in the file using the
- middle mouse button. Holding the shift key while dragging the text will copy
- the selected text, leaving the original text in place. Holding the control key
- will drag the text in overlay mode.
-
- Normally, dragging moves text by removing it from the selected position at the
- start of the drag, and inserting it at a new position relative to to the
- mouse. Dragging a block of text over existing characters, displaces the
- characters to the end of the selection. In overlay mode, characters which are
- occluded by blocks of text being dragged are simply removed. When dragging
- non-rectangular selections, overlay mode also converts the selection to
- rectangular form, allowing it to be dragged outside of the bounds of the
- existing text.
-
- The section "Using the Mouse" sumarizes the mouse commands for making primary
- and secondary selections. Primary selections can also be made via keyboard
- commands, see "Keyboard Shortcuts".
-
- The easiest way to copy and move text around in your file or between windows,
- is to use the clipboard, an imaginary area that temporarily stores text and
- data. The Cut command removes the selected text (see Selecting Text) from your
- file and places it in the clipboard. Once text is in the clipboard, the Paste
- command will copy it to the insert position in the current window. For
- example, to move some text from one place to another, select it by dragging the
- mouse over it, choose Cut to remove it, click the pointer to move the insert
- point where you want the text inserted, then choose Paste to insert it. Copy
- copies text to the clipboard without deleting it from your file. You can also
- use the clipboard to transfer text to and from other Motif programs and X
- programs which make proper use of the clipboard.
-
-
- FINDING AND REPLACING TEXT
-
- The Search menu contains a number of commands for finding and replacing text.
-
- The Find... and Replace... commands present dialogs for entering text for
- searching and replacing. These dialogs also allow you to choose whether you
- want the search to be sensitive to upper and lower case, or whether to use the
- standard Unix pattern matching characters (regular expressions). Searches
- begin at the current text insertion position.
-
- Find Again and Replace Again repeat the last find or replace command without
- prompting for search strings. To selectively replace text, use the two
- commands in combination: Find Again, then Replace Again if the highlighted string
- should be replaced, or Find Again again to go to the next string.
-
- Find Selection searches for the text contained in the current primary selection
- (see Selecting Text). The selected text does not have to be in the current
- editor window, it may even be in another program. For example, if the word dog
- appears somewhere in a window on your screen, and you want to find it in the
- file you are editing, select the word dog by dragging the mouse across it,
- switch to your NEdit window and choose Find Selection from the Search menu.
-
- Searching Backwards
-
- Holding down the shift key while choosing any of the search or replace commands
- from the menu (or using the keyboard shortcut), will search in the reverse
- direction. Users who have set the search direction using the buttons in the
- search dialog, may find it a bit confusing that Find Again and Replace Again
- don't continue in the same direction as the original search (for experienced
- users, consistency of the direction implied by the shift key is more
- important).
-
- Selective Replacement
-
- To replace only some occurrences of a string within a file, choose Replace...
- from the Search menu, enter the string to search for and the string to
- substitute, and finish by pressing the Find button. When the first occurrence
- is highlighted, use either Replace Again (^A) to replace it, or Find Again (^G)
- to move to the next occurrence without replacing it, and continue in such a
- manner through all occurrences of interest.
-
- To replace all occurrences of a string within some range of text, select the
- range (see Selecting Text), choose Replace... from the search menu, type the
- string to search for and the string to substitute, and press the "R. in
- Selection" button in the dialog. Note that selecting text in the Replace...
- dialog will unselect the text in the window.
-
- Regular Expressions
-
- Regular expressions are available in the Find... and Replace... dialogs as a
- way to match inexact sequences of characters. Regular expression substitution
- can also be used to program automatic editing operations. For example, the
- following are search and replace strings to find occurences of the subroutine
- get_x, reverse the first and second parameters, add a third parameter of NULL,
- and change the name to new_get_x":
-
- Search string: get_x\(([^ ,]*), ([^\)]*)\)
- Replace string: new_get_x(\2, \1, NULL)
-
- To use regular expressions, click on the Regular Expression button in the
- Find... or Replace... dialogs before doing a search or replacement.
-
- Regular Expression Syntax
-
- The components of a regular expression are: branches, pieces, atoms, and
- ranges. A regular expression consists of zero or more branches, separated by
- `|'. It matches anything that matches one of the branches.
-
- A branch is zero or more pieces, concatenated. It matches a match for the
- first, followed by a match for the second, etc.
-
- A piece is an atom possibly followed by `*', `+', or `?'. An atom followed by
- `*' matches a sequence of 0 or more matches of the atom. An atom followed by
- `+' matches a sequence of 1 or more matches of the atom. An atom followed by
- `?' matches a match of the atom, or the null string.
-
- An atom is a regular expression in parentheses (matching a match for the
- regular expression), a range (see below), `.' (matching any single character),
- `^' (matching the null string at the beginning of a line string), `$' (matching
- the null string at the end of a line), a `\' followed by a single character
- (matching that character), or a single character with no other significance
- (matching that character). \t, \n, \b, \r, and \f represent the characters tab
- newline, backspace, carriage return, and form feed.
-
- A range is a sequence of characters enclosed in `[]'. It normally matches any
- single character from the sequence. If the sequence begins with `^', it
- matches any single character not from the rest of the sequence. If two
- characters in the sequence are separated by `-', this is shorthand for the full
- list of ASCII characters between them (e.g. `[0-9]' matches any decimal
- digit). To include a literal `]' in the sequence, make it the first character
- (following a possible `^'). To include a literal `-', make it the first or
- last character. A backslash `\' followed by a single character includes that
- character, however backslashes are not necessary for most special characters,
- since inside a range, only the `]', `-', and '\' characters are treated
- specially.
-
- Substitution
-
- Wherever the substitution string contains the character `&', NEdit will
- substitute the the entire string that was matched in the Find operation. Up to
- nine sub-expressions of the match string can also be inserted into the
- replacement string, using `\' followed by a digit. \1 through \9 represent the
- strings that matched parenthesized expressions within the regular expression,
- numbered left-to-right in order of their opening parentheses. Preceding & or
- \1-9 with \U, \u, \L, or \l adjusts the case of the inserted text. \u and \l
- change only the first character, while \U and \L change the entire string to
- upper or lower case. \t, \n, \b, \r, and \f represent the characters tab
- newline, backspace, carriage return, and form feed in a substitution string
- represent the tab and newline characters as they do in match strings.
-
- Ambiguity
-
- If a regular expression could match two different parts of the text, it will
- match the one which begins earliest. If both begin in the same place but match
- different lengths, or match the same length in different ways, life gets
- messier, as follows.
-
- In general, the possibilities in a list of branches are considered in
- left-to-right order, the possibilities for `*', `+', and `?' are considered
- longest-first, nested constructs are considered from the outermost in, and
- concatenated constructs are considered leftmost-first. The match that will be
- chosen is the one that uses the earliest possibility in the first choice that
- has to be made. If there is more than one choice, the next will be made in the
- same manner (earliest possibility) subject to the decision on the first
- choice. And so forth.
-
- For example, `(ab|a)b*c' could match `abc' in one of two ways. The first
- choice is between `ab' and `a'; since `ab' is earlier, and does lead to a
- successful overall match, it is chosen. Since the `b' is already spoken for,
- the `b*' must match its last possibility-the empty string-since it must respect
- the earlier choice.
-
- In the particular case where no `|'s are present and there is only one `*',
- `+', or `?', the net effect is that the longest possible match will be chosen.
- So `ab*', presented with `xabbbby', will match `abbbb'. Note that if `ab*' is
- tried against `xabyabbbz', it will match `ab' just after `x', due to the
- begins-earliest rule. (In effect, the decision on where to start the match is
- the first choice to be made, hence subsequent choices must respect it even if
- this leads them to less-preferred alternatives.)
-
-
- FEATURES FOR PROGRAMMERS
-
- Indentation
-
- With Auto Indent turned on (the default), NEdit keeps a running indent. When
- you press the return key, space and tabs are inserted to line up the insert
- point under the start of the previous line. Ctrl+Return in auto-indent mode
- acts like a normal return, With auto-indent turned off, Ctrl+Return does
- indentation.
-
- The Shift Left and Shift Right commands adjust the indentation for several
- lines at once. To shift a block of text one character to the right, select the
- text, then choose Shift Right from the Edit menu. Note that the accelerator
- keys for these menu items are Ctrl+9 and Ctrl+0, which correspond to the right
- and left parenthesis on most keyboards. Remember them as adjusting the text in
- the direction pointed to by the parenthesis character. Holding the Shift key
- while selecting either Shift Left or Shift Right will shift the text by one tab
- stop.
-
- Tabs
-
- Most Unix programs for text display and processing, assume an eight character
- tab. Unfortunately, an 8 character tab is not convenient for programming in C,
- C++, and other structured languages. Inside of NEdit and other editors that
- allow you to change the interpretation of the tab character, it is much easier
- to work with C code when the tab distance is set to match the program
- indentation distance, usually 3 or 4 characters. However, there are serious
- tradeoffs to using non-standard tabs. In addition to many Unix utilities not
- displaying or interpreting the files correctly, other programmers may not
- interpret the files correctly, or may use editors which can't display or edit
- the files properly.
-
- An alternative to changing the interpretation of the tab character is tab
- emulation. In the Tabs... dialog, turning on Emulated Tabs causes the Tab key
- to insert the correct number of spaces and/or tabs to bring the cursor the next
- emulated tab stop, as if tabs were set at the emulated tab distance rather than
- the hardware tab distance. Backspacing immediately after entering an emulated
- tab will delete it as a unit, but as soon as you move the cursor away from the
- spot, NEdit will forget that the collection of spaces and tabs is a tab, and
- will treat it as separate characters. To enter a real tab character with
- "Emulate Tabs" turned on, use Ctrl+Tab.
-
- It is also possible to tell NEdit not to insert ANY tab characters at all in
- the course of processing emulated tabs, and in shifting and rectangular
- insertion/deletion operations, for programmers who worry about the
- misinterpretation of tab characters on other systems.
-
- Line Numbers
-
- To find a particular line in a source file by line number, choose Goto Line
- #... from the Search menu. You can also directly select the line number text
- in the compiler message in the terminal emulator window (xterm, decterm,
- winterm, etc.) where you ran the compiler, and choose Goto Selected from the
- Search menu. Note that under AIXWindows (IBM), selections in aixterms appear
- to go away when you release the mouse, but they are actually retained and can
- be used by NEdit and other programs that use selections.
-
- To find out the line number of a particular line in your file, turn on
- Statistics Line in the Preferences menu and position the insertion point
- anywhere on the line. The statistics line continuously updates the line number
- of the line containing the cursor.
-
- Matching Parentheses
-
- To help you inspect nested parentheses, brackets, braces, quotes, and other
- characters, NEdit has both an automatic parenthesis matching mode, and a Find
- Matching command. Automatic parenthesis matching is activated when you type,
- or move the insertion cursor after a parenthesis, bracket, or brace. It
- momentarily highlights the matching character if that character is visible in
- the window. To find a matching character anywhere in the file, select it or
- position the cursor after it, and choose Find Matching from the Search menu.
- If the character matches itself, such as a quote or slash, select the first
- character of the pair. NEdit will match {, (, [, <, ", ', `, /, and \.
-
- Opening Included Files
-
- The Open Selected command in the File menu understands the C preprocessor's
- #include syntax, so selecting an #include line and invoking Open Selected will
- generally find the file referred to, unless doing so depends on the settings of
- compiler switches or other information not available to NEdit.
-
- Finding Subroutine and Data Declarations
-
- NEdit can process tags files generated using the Unix ctags command. Ctags
- creates index files correlating names of functions and declarations with their
- locations in C, Fortran, or Pascal source code files. (See the ctags manual
- page for more information). Ctags produces a file called "tags" which can be
- loaded by NEdit. Once loaded, the information in the tags file enables NEdit
- to go directly to the declaration of a highlighted function or data structure
- name with a single command. To load a tags file, select "Load Tags File" from
- the File menu and choose a tags file to load, or specify the name of the tags
- file on the NEdit command line:
-
- nedit -tags tags
-
- NEdit can also be set to load a tags file automatically when it starts up.
- Setting the X resource nedit.tagFile to the name of a tag file tells NEdit to
- look for that file at startup time (see Customizing NEdit). The file name can
- be either a complete path name, in which case NEdit will always load the same
- tags file, or a file name without a path or with a relative path, in which case
- NEdit will load it starting from the current directory. The second option
- allows you to have different tags files for different projects, each
- automatically loaded depending on the directory you're in when you start
- NEdit. Setting the name to "tags" is an obvious choice since this is the name
- that ctags uses.
-
- To find the definition of a function or data structure once a tags file is
- loaded, select the name anywhere it appears in your program (see SELECTING,
- CUTTING, and PASTING) and choose "Find Definition" from the Search menu.
-
-
- USING THE MOUSE
-
- NEdit is one of the most mouse interactive text editors around, but you don't
- need to know all of the details below to be productive. You can get by with
- just the left mouse button, clicking to move the cursor, and dragging to make a
- selection.
-
- This section will make more sense if you also read the section called,
- SELECTING, CUTTING, and PASTING, which explains the terminology of selections,
- i.e. what is meant by primary, secondary, rectangular, etc.
-
- The general meaning of mouse buttons and modifier keys is as follows:
-
- Buttons
-
- Button 1 (left) Cursor position and primary selection
-
- Button 2 (middle) Secondary selections, and dragging and
- copying primary selection
-
- Modifier keys
-
- Shift On primary selections, (left mouse button):
- Extends selection to the mouse pointer
- On secondary and copy operations, (middle):
- Toggles between move and copy
-
- Ctrl Makes selection rectangular or insertion
- columnar
-
- Alt* (on release) Exchange primary and secondary
- selections.
-
-
- Button 1
-
- The left mouse button is used to position the cursor and to make primary
- selections.
-
- Click Moves the cursor
-
- Double Click Selects a whole word
-
- Triple Click Selects a whole line
-
- Quadruple Click Selects the whole file
-
- Shift Click Adjusts (extends or shrinks) the selection,
- or if there is no existing selection, begins a
- new selection between the cursor and the mouse.
-
- Ctrl+Shift+Click Adjusts (extends or shrinks) the selection
- rectangularly.
-
- Drag Selects text between where the mouse was pressed
- and where it was released.
-
- Ctrl+Drag Selects rectangle between where the mouse was
- pressed and where it was released.
-
-
- Button 2
-
- The middle mouse button is for making secondary selections, and copying and
- dragging the primary selection
-
- Click Copies the primary selection to the clicked position.
-
- Shift+Click Moves the primary selection to the clicked position,
- deleting it from its original position.
-
- Drag 1) Outside of the primary selection:
- Begins a secondary selection.
- 2) Inside of the primary selection:
- Moves the entire selection by dragging.
-
- Ctrl+Drag 1) Outside of the primary selection:
- Begins a rectangular secondary selection.
- 2) Inside of the primary selection:
- Drags the selection in overlay mode (see below).
-
- When the mouse button is released after creating a secondary selection:
-
- No Modifiers If there is a primary selection, replaces it with the
- secondary selection. Otherwise, inserts the secondary
- selection at the cursor position.
-
- Shift Move the secondary selection, deleting it from its
- original position. If there is a primary selection,
- the move will replace the primary selection with the
- secondary selection. Otherwise, moves the secondary
- selection to to the cursor position.
-
- Alt* Exchange the primary and secondary selections.
-
-
- While moving the primary selection by dragging with the middle mouse button:
-
- Shift Leaves a copy of the original selection in place rather than
- removing it or blanking the area.
-
- Ctrl Changes from insert mode to overlay mode (see below).
-
- Escape Cancels drag in progress.
-
- Overlay Mode: Normally, dragging moves text by removing it from the selected
- position at the start of the drag, and inserting it at a new position relative
- to to the mouse. When you drag a block of text over existing characters, the
- existing characters are displaced to the end of the selection. In overlay
- mode, characters which are occluded by blocks of text being dragged are simply
- removed. When dragging non-rectangular selections, overlay mode also converts
- the selection to rectangular form, allowing it to be dragged outside of the
- bounds of the existing text.
-
- * The Alt key may be labeled Meta or Compose-Character on some keyboards. Some
- window managers, including default configurations of mwm, bind combinations of
- the Alt key and mouse buttons to window manager operations. In NEdit, Alt is
- only used on button release, so regardless of the window manager bindings for
- Alt-modified mouse buttons, you can still do the corresponding NEdit operation
- by using the Alt key AFTER the initial mouse press, so that Alt is held while
- you release the mouse button. If you find this difficult or annoying, you can
- re-configure most window managers to skip this binding, or you can re-configure
- NEdit to use a different key combination.
-
-
- KEYBOARD SHORTCUTS
-
- Most of the keyboard shortcuts in NEdit are shown on the right hand sides of
- the pull-down menus. However, there are more which are not as obvious. These
- include; dialog button shortcuts; menu and dialog mnemonics; labeled keyboard
- keys, such as the arrows, page-up, page-down, and home; and optional Shift
- modifiers on accelerator keys, like [Shift]Ctrl+F.
-
- Menu Accelerators
-
- Pressing the key combinations shown on the right of the menu items is a
- shortcut for selecting the menu item with the mouse. Some items have the shift
- key enclosed in brackets, such as [Shift]Ctrl+F. This indicates that the shift
- key is optional. In search commands, including the shift key reverses the
- direction of the search. In Shift commands, it makes the command shift the
- selected text by a whole tab stop rather than by single characters.
-
- Menu Mnemonics
-
- Pressing the Alt key in combination with one of the underlined characters in
- the menu bar pulls down that menu. Once the menu is pulled down, typing the
- underlined characters in a menu item (without the Alt key) activates that
- item. With a menu pulled down, you can also use the arrow keys to select menu
- items, and the space or enter keys to activate them.
-
- Keyboard Shortcuts within Dialogs
-
- One button in a dialog is usually marked with a thick indented outline.
- Pressing the Return or Enter key activates this button.
-
- All dialogs have either a Cancel or Dismiss button. This button can be
- activated by pressing the Escape (or Esc) key.
-
- Pressing the tab key moves the keyboard focus to the next item in a dialog.
- Within an associated group of buttons, the arrow keys move the focus among the
- buttons. Shift+Tab moves backward through the items.
-
- Most items in dialogs have an underline under one character in their name.
- Pressing the Alt key along with this character, activates a button as if you
- had pressed it with the mouse, or moves the keyboard focus to the associated
- text field or list.
-
- You can select items from a list by using the arrow keys to move the selection
- and space to select.
-
- In file selection dialogs, you can type the beginning characters of the file
- name or directory in the list to select files
-
- Labeled Function Keys
-
- The labeled function keys on standard workstation and PC keyboards, like the
- arrows, and page-up and page-down, are active in NEdit, though not shown in the
- pull-down menus.
-
- Holding down the control key while pressing a named key extends the scope of
- the action that it performs. For example, Home normally moves the insert
- cursor the beginning of a line. Ctrl+Home moves it to the beginning of the
- file. Backspace deletes one character, Ctrl+Backspace deletes one word.
-
- Holding down the shift key while pressing a named key begins or extends a
- selection. Combining the shift and control keys combines their actions. For
- example, to select a word without using the mouse, position the cursor at the
- beginning of the word and press Ctrl+Shift+RightArrow. The Alt key modifies
- selection commands to make the selection rectangular.
-
- Under X and Motif, there are several levels of translation between keyboard
- keys and the actions they perform in a program. The "Customizing NEdit", and
- "X Resources" sections of the Help menu have more information on this subject.
- Because of all of this configurability, and since keyboards and standards for
- the meaning of some keys vary from machine to machine, the mappings may be
- changed from the defaults listed below.
-
- Modifier Keys (in general)
-
- Ctrl Extends the scope of the action that the key would otherwise
- perform. For example, Home normally moves the insert cursor the
- beginning of a line. Ctrl+Home moves it to the beginning of the
- file. Backspace deletes one character, Ctrl+ Backspace deletes
- one word.
-
- Shift Extends the selection to the cursor position. If there's no
- selection, begins one between the old and new cursor positions.
-
- Alt When modifying a selection, makes the selection rectangular.
-
- (For the effects of modifier keys on mouse button presses, see the section
- titled "Using the Mouse")
-
- All Keyboards
-
- Escape Cancels operation in progress: menu selection, drag,
- selection, etc. Also equivalent to cancel button in
- dialogs.
-
- Backspace Delete the character before the cursor
-
- Ctrl+BS Delete the word before the cursor
-
- Arrows
-
- Left Move the cursor to the left one character
-
- Ctrl+Left Move the cursor backward one word (Word delimiters
- are settable, see Customizing NEdit, and X Resources)
-
- Right Move the cursor to the right one character
-
- Ctrl+Right Move the cursor forward one word
-
- Up Move the cursor up one line
-
- Ctrl+Up Move the cursor up one paragraph. (Paragraphs are
- delimited by blank lines.)
-
- Down Move the cursor down one line.
-
- Ctrl+Down Move the cursor down one paragraph.
-
- Ctrl+Return Return with automatic indent, regardless of the setting
- of Auto Indent.
-
- Shift+Return Return without automatic indent, regardless of the
- setting of Auto Indent.
-
- Ctrl+Tab Insert an ascii tab character, without processing
- emulated tabs.
-
- Alt+Ctrl+<c> Insert the control-code equivalent of a key <c>
-
- Ctrl+/ Select everything (same as Select All menu item or ^A)
-
- Ctrl+\ Unselect
-
- Ctrl+U Delete to start of line
-
- PC Standard Keyboard
-
- Ctrl+Insert Copy the primary selection to the clipboard (same as
- Copy menu item or ^C) for compatibility with Motif
- standard key binding
-
- Shift+Ctrl+
- Insert Copy the primary selection to the cursor location.
-
- Delete Delete the character before the cursor. (Can be
- configured to delete the character after the cursor,
- see Customizing NEdit, and X Resources)
-
-
- Ctrl+Delete Delete to end of line.
-
- Shift+Delete Cut, remove the currently selected text and place it
- in the clipboard. (same as Cut menu item or ^X) for
- compatibility with Motif standard key binding.
-
- Shift+Ctrl+
- Delete Cut the primary selection to the cursor location.
-
- Home Move the cursor to the beginning of the line.
-
- Ctrl+Home Move the cursor to the beginning of the file.
-
- End Move the cursor to the end of the line.
-
- Ctrl+End Move the cursor to the end of the file.
-
- PageUp Scroll and move the cursor up by one page.
-
- Ctrl+PageUp Scroll and move the cursor left by one page.
-
- PageDown Scroll and move the cursor down by one page.
-
- Ctrl+PageDown Scroll and move the cursor right by one page.
-
- F10 Make the menu bar active for keyboard input (Arrow
- Keys, Return, Escape, and the Space Bar)
-
-
- Specialty Keyboards
-
- On machines with different styles of keyboards, generally, text editing actions
- are properly matched to the labeled keys, such as Remove, Next-screen, etc..
- If you prefer different key bindings, see the heading titled "Binding Keys to
- Actions" in the X RESOURCES section below.
-
-
- TEXT FILLING
-
- The Fill Paragraph command in NEdit is important for anyone who types plain
- blocks of text. In a plain text file, there is no way to store any additional
- format information, like a word processor might do. This makes it impossible
- for the editor to tell parts of the text belong together as a paragraph from
- carefully arranged individual lines. (In continuous wrap mode, you can acheive
- this affect by omitting newlines within paragraphs, but files with extremely
- long lines are not standard in Unix, and may not be compatible with all
- tools). So, unless you're operating in continuous wrap mode, editing in the
- middle of a paragraph will usually leave the lines messy and uneven.
-
- Since NEdit can't act automatically to keep your text lined up, you need to
- tell it explicitly where to operate, and that is what Fill Paragraph is for.
- It arranges lines to fill the space between two margins, wrapping the lines
- neatly at word boundaries. Normally, the left margin for filling is inferred
- from the text being filled, the left edge of the text, or the furthest left
- non-whitespace character. The right margin is either the Wrap Margin, set in
- the preferences menu (by default, the right edge of the window), or can also be
- chosen on the fly by using a rectangular selection (see below).
-
- There are three ways to use Fill Paragraph. The simplest is, while you are
- typing text, and there is no selection, simply select Fill Paragraph (or type
- Ctrl+J), and NEdit will arrange the text in the paragraph adjacent to the
- cursor. A paragraph, in this case, means an area of text delimited by blank
- lines.
-
- The second way to use Fill Paragraph is with a selection. If you select a
- range of text and then chose Fill Paragraph, all of the text in the selection
- will be filled. Again, continuous text between blank lines is interpreted as
- paragraphs and filled individually.
-
- The third way to use Fill Paragraph is with a rectangular selection. Fill
- Paragraph treats rectangular selections differently from other commands.
- Instead of simply filling the text inside the rectangular selection, NEdit
- interprets the right edge of the selection as the requested wrap margin. Text
- to the left of the selection is not disturbed (the usual interpretation of a
- rectangular selection), but text to the right of the selection is included in
- the operation and is pulled in to the selected region.
-
-
- SHIFT LEFT, SHIFT RIGHT
-
- While shifting blocks of text is most important for programmers (See Features
- for Programming), it is also useful for other tasks, such as creating indented
- paragraphs.
-
- To shift a block of text one tab stop to the right, select the text, then
- choose Shift Right from the Edit menu. Note that the accelerator keys for
- these menu items are Ctrl+9 and Ctrl+0, which correspond to the right and left
- parenthesis on most keyboards. Remember them as adjusting the text in the
- direction pointed to by the parenthesis character. Holding the Shift key while
- selecting either Shift Left or Shift Right will shift the text by one character.
-
- It is also possible to shift blocks of text by selecting the text
- rectangularly, and dragging it left or right (and up or down as well). Using a
- rectangular selection also causes tabs within the selection to be recalculated
- and substituted, such that the non-whitespace characters remain stationary with
- respect to the selection.
-
-
- SHELL COMMANDS/FILTERS
-
- The Shell menu (Unix versions only) allows you to execute Unix shell commands
- from within NEdit. You can add items to the menu to extend NEdit's command set
- or to incorporate custom automatic editing features using shell commands or
- editing languages like awk and sed. To add items to the menu, use the Shell
- Commands... dialog in the Preferences menu under Default Settings. NEdit comes
- pre-configured with a few useful Unix commands like spell and sort, but we
- encourage you to add your own custom extensions.
-
- Filter Selection... prompts you for a Unix command to use to process the
- currently selected text. The output from this command replaces the contents of
- the selection.
-
- Execute Command... prompts you for a Unix command and replaces the current
- selection with the output of the command. If there is no selection, it
- deposits the output at the current insertion point.
-
- Execute Command Line uses the position of the cursor in the window to indicate
- a line to execute as a shell command line. The cursor may be positioned
- anywhere on the line. This command allows you to use an NEdit window as an
- editable command window for saving output and saving commands for re-execution.
-
- The X resource called nedit.shell (See Customizing NEdit) determines which Unix
- shell is used to execute commands. The default value for this resource is
- /bin/csh.
-
-
- LEARN/REPLAY
-
- Selecting Learn Keystrokes from the Macro menu puts NEdit in learn mode. In
- learn mode, keystrokes and menu commands are recorded, to be played back later,
- using the Replay Keystrokes command, or pasted into a macro in the Macro
- Commands dialog of the Default Settings menu in Preferences.
-
- Note that only keyboard and menu commands are recorded, not mouse clicks or
- mouse movements since these have no absolute point of reference, such as cursor
- or selection position. When you do a mouse-based operation in learn mode,
- NEdit will beep (repeatedly) to remind you that the operation was not recorded.
-
-
- MACROS
-
- NEdit 4.0 has a very limited ability to process macros. Macro commands can use
- all of NEdit's editing functionality, available from either the keyboard or
- menus, however, there is not yet a macro "language". That is, you can't use
- branching or looping, and can't set or test variables.
-
- The way to accomplish more complex editing tasks, is still to use the Shell
- Commands dialog to attach programs written in awk, sed, Perl, etc.
-
- As they stand, macros are useful for saving Learn/Replay sequences, for limited
- key-binding, and, surprisingly, many very complex tasks can be coded in terms
- of regular expression substitutions.
-
- Key binding via macros is simpler than any other method available in NEdit,
- because you don't have to deal with X resources or translation table syntax.
- However, the only way to change menu accelerator keys is through X resources,
- and if you try to do a lot key binding via the Macro Commands dialog, you will
- quickly end up with a very large Macro menu.
-
- A macro in this version of NEdit is simply a list of newline-separated
- actions. NEdit action routines are listed in the Action Routines section of
- the Help menu. The easiest way to write a macro, is to record keystrokes and
- menu choices in learn mode, then paste the macro in the Macro Commands dialog,
- using the Paste Learn/Replay Macro button.
-
-
- SERVER MODE AND NC
-
- NEdit can be operated on its own, or as a two-part client/server application.
- Client/server mode is useful for integrating NEdit with software development
- environments, mailers, and other programs; or just as a quick way to open files
- from the shell command line without starting a new NEdit session.
-
- To run NEdit in server mode, type:
-
- nedit -server
-
- NEdit can also be started in server mode via the nc program when no servers are
- available.
-
- The nc (for NEdit Client) program, which is distributed along with nedit, sends
- commands to an nedit server to open files, select lines, or execute editor
- actions. It accepts a limited set of the nedit command line options: -read,
- -create, -line (or +n), -do, and a list of file names. Listing a file on the
- nc command line means, open it if it is not already open and bring the window
- to the front. -read and -create affect only newly opened files, but -line and
- -do can also be used on files which are already open (See "NEdit Command Line"
- for more information).
-
- In typical Unix style, arguments affect the files which follow them on the
- command line, for example:
-
- incorrect: nc file.c -line 25
- correct: nc -line 25 file.c
-
- nc also accepts one command line option of its own, -noask (or -ask), which
- instructs it whether to automatically start a server if one is not available.
- This is also settable via the X resource, nc.autoStart (See X Resources below).
-
- Sometimes it is useful to have more than one NEdit server running, for example
- to keep mail and programming work separate, or more importantly for working
- with tools like ClearCase which provide different views of the file system from
- different shells. The option, -svrname, to both nedit and nc, allow you to
- start, and communicate with, separate named servers. A named server responds
- only to requests with the corresponding -svrname argument.
-
- Communication between nc and nedit is through the X display. So as long as X
- windows is set up and working properly, nc will will work properly as well. nc
- uses the DISPLAY environment variable, the machine name and your user name to
- find the appropriate server, meaning, if you have several machines sharing a
- common file system, nc will not be able to find a server that is running on a
- machine with a different host name, even though it may be perfectly appropriate
- for editing a given file.
-
- The command which nc uses to start an nedit server is settable via the X
- resource nc.serverCommand, by default, "nedit -server".
-
-
- CRASH RECOVERY
-
- If a system crash, network failure, X server crash, or program error should
- happen while you are editing a file, you can easily recover most of your work.
- NEdit maintains a backup file which it updates periodically (every 8 editing
- operations or 30 characters typed under Unix, or 80 characters under VMS).
- This file is has the same name as the file that you are editing, but with the
- character "~" (tilde) on Unix or "_" (underscore) on VMS prefixed to the name.
- To recover a file after a crash, simply rename the file to remove the tilde
- or underscore character, replacing the older version of the file. Because
- several of the Unix shells consider the tilde to be a special character, you
- may have to prefix the character with a "\" (backslash) when you move or
- delete an NEdit backup file.
-
- Example, to recover the file called "help.c" type the command:
-
- mv \~help.c help.c
-
- On VMS, type:
-
- RENAME _HELP.C HELP.C
-
-
- THE NEDIT COMMAND LINE
-
- nedit [-read] [-create] [-line n | +n] [-server] [-do command] [-tags file]
- [-tabs n] [-wrap] [-nowrap] [-autowrap] [-autoindent] [-noautoindent]
- [-autosave] [-noautosave] [-rows n] [-columns n] [-font font]
- [-geometry geometry] [-display [host]:server[.screen]
- [-xrm resourcestring] [-svrname name] [file...]
-
- -read -- Open the file Read Only regardless of the actual file
- protection.
-
- -create -- Don't warn about file creation when a file doesn't exist.
-
- -line n (or +n) -- Go to line number n
-
- -server -- Designate this session as an NEdit server, for processing
- commands from the nc program. nc can be used to interface NEdit
- to code development environments, mailers, etc., or just as a
- quick way to open files from the shell command line without
- starting a new NEdit session.
-
- -do command -- Execute an NEdit action routine. on each file following
- the -do argument on the command line. -do is particularly useful
- from the nc program, where nc -do can remotely execute commands in
- an nedit -server session.
-
-
- -tags file -- Load a file of directions for finding definitions of
- program subroutines and data objects. The file must be of the
- format generated by the Unix ctags command.
-
- -tabs n -- Set tab stops every n characters.
-
- -wrap, -nowrap -- Wrap long lines at the right edge of the window
- rather than continuing them past it. (Continuous Wrap mode)
-
- -autowrap, -noautowrap -- Wrap long lines when the cursor reaches
- the right edge of the window by inserting newlines at word
- boundaries. (Auto Newline Wrap mode)
-
- -autoindent, noautoindent -- Maintain a running indent.
-
- -autosave, -noautosave -- Maintain a backup copy of the file being
- edited under the name ~filename (on Unix) or _filename (on VMS).
-
- -rows n -- Default height in characters for an editing window.
-
- -columns n -- Default width in characters for an editing window.
-
- -font font (or -fn font) -- Font for text being edited (Font for
- menus and dialogs can be set with -xrm "*fontList:font").
-
- -display [host]:server[.screen] -- The name of the X server to use.
- host specifies the machine, server specifies the display server
- number, and screen specifies the screen number. host or screen
- can be omitted and default to the local machine, and screen 0.
-
- -geometry geometry (or -g geometry) -- The initial size and/or
- location of editor windows. The argument has the form:
-
- [<width>x<height>][+|-][<xoffset>[+|-]<yoffset>]
-
- where <width> and <height> are the desired width and height of
- the window, and <xoffset> and <yoffset> are the distance from
- the edge of the screen to the window, + for top or left, - for
- bottom or right.
-
- -background color (or -bg color) -- Background color. (background
- color for text can be set separately with:
- -xrm "nedit*text.background: color").
-
- -foreground color (or -fg color) -- Foreground color. (foreground
- color for text can be set separately with:
- -xrm "nedit*text.foreground: color").
-
- -xrm resourcestring -- Set the value of an X resource to override a
- default value (see Customizing NEdit).
-
- -svrname name -- When starting nedit in server mode, name the
- server, such that it responds to requests only when nc is given
- a correspoding -svrname argument. By naming servers, you can
- run several simultaneously, and direct files and commands
- specifically to any one.
-
-
- CUSTOMIZATION
-
- NEdit can be customized in quite a number of ways. The most important
- user-settable options are presented in the Preferences menu, including all
- options that users might need to change during an editing session. Options set
- in the Default Settings sub-menu of the Preferences menu can be preserved
- between sessions by selecting Save Defaults, which writes a file called .nedit
- in the user's home directory. See the section titled "Preferences" for more
- details.
-
- User defined commands can be added to both NEdit's Shell and Macro menus.
- Dialogs for creating items in these menus can be found in the Default Settings
- sub menu of the Preferences menu (labeled Shell Commands and Macro Commands).
- Since NEdit's macro facility is not yet well developed, the best way to add
- complex automatic editing features is through shell commands that call programs
- like awk and sed, rather than through NEdit macros.
-
- For hard-core users who depend on NEdit every day and want to tune every
- excruciating detail, there are also X resources for a vast number of such
- details, down to the color of each individual button. However, some options of
- importance to average users are also set via X resources, most importantly, key
- binding. While limited key binding can be done through the Macro Commands
- dialog in the Preferences menu, significant changes should be made via the
- Translations resource and menu accelerator resources. The section titled "X
- Resources" has more information on setting X resources, as well as a list of
- selected resources of interest to the average user.
-
-
- PREFERENCES
-
- The Preferences menu allows you to set options for both the current editing
- window, and default values for newly created windows and future NEdit
- sessions. The first group of options in the Preferences menu take effect
- immediately and refer to the current window only. Options in the Default
- Settings sub-menu have no effect on the current window, but instead provide
- initial settings for future windows created using the New or Open commands.
- Preferences set in the Default Settings sub-menu can also be saved in a file
- that is automatically read by NEdit at startup time, by selecting Save
- Defaults.
-
- Auto Indent -- Maintain a running indent. Pressing the return key will
- line up the cursor with the indent level of the previous line.
-
- AutoNewline Wrap -- Wrap text at word boundaries when the cursor
- reaches the right margin, by replacing the space or tab at the last
- word boundary with a newline character.
-
- Continuous Wrap -- Wrap long lines which extend past the right margin.
- This mode is typically used to produce files where newlines are
- ommitted within paragraphs, to make text filling automatic (a kind
- of poor-man's word processor). Text of this style is common on
- Macs and PCs but is not necessarily supported very well under Unix
- (except in programs which deal with e-mail, for which it is often
- the format of choice).
-
- WrapMargin... -- Set margin for Auto Newline Wrap, Continuous Wrap, and
- Fill Paragraph. By default, lines wrap at the right margin of the
- window, but a wrap margin can also be set at a specific column.
-
- Preserve Last Version -- On Save, write a backup copy of the file as it
- existed before the Save command with the extension .bck (Unix only).
-
- Incremental Backup -- Periodically make a backup copy of the file being
- edited under the name ~filename on Unix or _filename on VMS (see
- Crash Recovery).
-
- Show Matching (..) -- Momentarily highlight matching parenthesis,
- brackets, and braces when one of these characters is typed, or when
- the insertion cursor is positioned after it.
-
- Text Font... -- Set the font for the text in this NEdit window. To set
- the font for all windows use the equivalent item in the Default
- Settings sub-menu. Note that since the font selection dialog
- narrows its lists of font characteristics depending on those
- already selected, it is important to know that you can unselect
- them by clicking on the selected items a second time.
-
- Tabs -- Set the tab distance (number of characters between tab stops)
- for tab characters, and control tab emulation and use of tab
- characters in padding and emulated tabs.
-
- Statistics Line -- Show the full file name, line number, and length of
- the file being edited.
-
- Overtype -- In overtype mode, new characters entered replace the
- characters in front of the insertion cursor, rather than being
- inserted before them. This preference can not be saved as a default.
-
- ReadOnly -- Lock the file against accidental modification. This
- temporarily prevents the file from being modified in this NEdit
- session. Note that this is diferent from setting the file
- protection. This preference can not be saved as a default.
-
- Default Settings -- Sub-menu of initial settings for future windows.
- These are the same as the options in the main part of the menu, but
- apply as defaults for future windows created during this NEdit
- session. These settings can be saved using the Save Defaults
- command below, to be loaded automatically each time NEdit is started.
-
- SaveDefaults -- Save the default options as set under Default Settings
- for future NEdit sessions.
-
-
- X RESOURCES
-
- NEdit has additional options to those provided in the Preferences menu which
- are set using X resources. Like most other X programs, NEdit can be customized
- to vastly unnecessary proportions, from initial window positions down to the
- font and shadow colors of each individual button (A complete discussion of how
- to do this is left to books on the X Windows System). Key binding (see
- "Binding Keys to Actions" below) is one of the most useful of these resource
- settable options.
-
- X resources are usually specified in a file called .Xdefaults in your home
- directory (on VMS this is sys$login:decw$xdefaults.dat). On some systems, this
- file is read and its information attached to the X server (your screen) when
- you start X. On other systems, the .Xdefaults file is read each time you run
- an X program. When X defaults are attached to the server, you can use a
- program called xrdb to update them without restarting X.
-
- The .nedit File
-
- The .nedit (saved preferences) file is in the same format as an X resource
- file, and its contents can be moved into your X resource file. One reason for
- doing so would be to attach server specific preferences, such as a default font
- to a particular X server. Another reason for moving preferences into the X
- resource file would be to keep preferences menu options and resource settable
- options together in one place. Though the files are the same format, additional
- resources should not be added to the .nedit file, they will not be read, and
- NEdit modifies this file by overwriting it completely. Note also that the
- contents of the .nedit file take precedence over the values of X resources.
- Using Save Defaults after moving the contents of your .nedit file to your
- .Xdefaults file will re-create the .nedit file, interfering with the options
- that you have moved.
-
- Selected X Resource Names
-
- The following are selected NEdit resource names and default values for NEdit
- options not settable via the Preferences menu (for preference resource names,
- see your .nedit file):
-
- nedit.tagFile: (not defined) -- The name of a file of the type produced
- by the Unix ctags command which NEdit will load at startup time
- (see Features for Programmers). The tag file provides a database
- from which NEdit can automatically open files containing the
- definition of a particular subroutine or data type.
-
- nedit.shell: /bin/csh -- (Unix systems only) The Unix shell (command
- interpreter) to use for executing commands from the Shell menu
-
- nedit.wordDelimiters: .,/\\`'!@#%^&*()-=+{}[]":;<>? -- The characters,
- in addition to blanks and tabs, which mark the boundaries between
- words for the move-by-word (Ctrl+Arrow) and select-word (double
- click) commands.
-
- nedit.remapDeleteKey: True -- Setting this resource to False restores
- the original Motif binding of the delete key to forward-delete.
- This binding causes problems when X servers with one delete/
- backspace configuration are connected with X clients of the other.
- Users with a backspace key in the backspace/delete position and who
- use only machines with that style of keyboard can set this resource
- to False to get back the forward-delete function of the delete key.
-
- nedit.stdOpenDialog: False -- Setting this resource to True restores the
- standard Motif style of Open dialog. NEdit file open dialogs are
- missing a text field at the bottom of the dialog, where the file
- name can be entered as a string. The field is removed in NEdit to
- encourage users to type file names in the list, a non-standard, but
- much faster method for finding files.
-
- nedit.printCommand: (system specific) -- Command used by the print dialog
- to print a file, i.e. lp, lpr, etc..
-
- nedit.printCopiesOption: (system specific) -- Option name used to
- specify multiple copies to the print command. If the option should
- be separated from its argument by a space, leave a trailing space.
- If blank, no "Number of Copies" item will appear in the print dialog.
-
- nedit.printQueueOption: (system specific) -- Option name used to specify
- a print queue to the print command. If the option should be
- separated from its argument by a space, leave a trailing space. If
- blank, no "Queue" item will appear in the print dialog.
-
- nedit.printNameOption: (system specific) -- Option name used to specify a
- job name to the print command. If the option should be separated
- from its argument by a space, leave a trailing space. If blank, no
- job or file name will be attached to the print job or banner page.
-
- nedit.printHostOption: (system specific) -- Option name used to specify a
- host name to the print command. If the option should be separated
- from its argument by a space, leave a trailing space. If blank, no
- "Host" item will appear in the print dialog.
-
- nedit.printDefaultQueue: (system specific) -- The name of the default
- print queue. Used only to display in the print dialog, and has no
- effect on printing.
-
- nedit.printDefaultHost: (system specific) -- The node name of the
- default print host. Used only to display in the print dialog, and
- has no effect on printing.
-
- nedit.multiClickTime: (system specific) -- Maximum time in milliseconds
- allowed between mouse clicks within double and triple click actions.
-
- nedit*scrollBarPlacement: BOTTOM_LEFT -- How scroll bars are placed in
- NEdit windows, as well as various lists and text fields in the
- program. Other choices are: BOTTOM_RIGHT, TOP_LEFT, or TOP_RIGHT.
-
- nedit*text.heavyCursor: False -- For monitors with poor resolution or
- users who have difficulty seeing the cursor, makes the cursor in the
- text editing area of the window heavier and darker.
-
- nedit*text.foreground: black -- Foreground color of the text editing area
- of the NEdit window.
-
- nedit*text.background: white -- Background color of the text editing area
- of the NEdit window.
-
- nedit*text.selectForeground: black -- Foreground (text) color for
- selections in the text editing area of the NEdit window.
-
- nedit*text.selectBackground: gray80 -- Color for selections in the text
- editing area of the NEdit window.
-
- nedit*text.highlightForeground: white -- Foreground (text) color for
- highlights (parenthesis flashing) in the text editing area of the
- NEdit window.
-
- nedit*text.highlightBackground: red -- Color for highlights (parenthesis
- flashing) in the text editing area of the NEdit window.
-
- nedit*text.cursorForeground: black -- Color for text cursor in the text
- editing area of the NEdit window.
-
- nedit*text.blinkRate: 600 -- Blink rate of the text insertion cursor in
- milliseconds. Set to zero to stop blinking.
-
- nedit*text.Translations: -- Modifies key bindings (see below).
-
- nedit*statsLine.foreground: black -- Foreground color of the statistics
- line area of the NEdit window.
-
- nedit*statsLine.background: gray70 -- Background color of the statistics
- line area of the NEdit window.
-
- nc.autoStart: False -- Whether the nc program should automatically start
- an NEdit server (without prompting the user) if an appropriate server
- is not found.
-
- nc.serverCommand: nedit -server -- Command used by the nc program to
- start an NEdit server.
-
- Binding Keys to Actions
-
- There are several ways to change key bindings in NEdit. The easiest way to add
- a new key binding in NEdit is to define a macro in the Macro Commands dialog in
- the Default Settings sub-menu of the Preferences menu. However, if you want to
- change existing bindings or add a significant number of new key bindings you
- will need to do so via X resources. The methods for changing menu accelerator
- keys is different from that for general key binding via translation tables.
- The section "Action Routines" lists the actions available to be bound.
-
- Key Binding Via Translations
-
- The most general way to bind actions to keys in NEdit is to use the translation
- table associated with the text widget. To add a binding to Alt+Y to insert the
- string "Hi!", for example, add lines similar to the following to your X
- resource file:
-
- NEdit*text.Translations: #override \n\
- Alt<Key>y: insert-string("Hi!") \n
-
- Unfortunately, the syntax for translation tables is not simple and is not
- covered completely here. You will need to refer to a book on the X window
- system for the exact syntax for translation tables. Translation tables map key
- and mouse presses, window operations, and other kinds of events to actions.
- The syntax (somewhat oversimplified) is a keyword; #override, #augment, or
- #replace; followed by lines (separated by newline characters) pairing events
- with actions. Events begin with modifiers, like Ctrl, Shift, or Alt, followed
- by the event type in <>. BtnDown, Btn1Down, Btn2Down, Btn1Up, Key, KeyUp are
- valid event types. For key presses, the event type is followed by the name of
- the key. You can specify a combination of events, such as a sequence of key
- presses, by separating them with commas. The other half of the event/action
- pair is a set of actions. These are separated from the event specification by
- a colon and from each other by spaces. Actions are names followed by
- parentheses, optionally containing one or more parameters separated by comas.
-
- Changing Menu Accelerator Keys
-
- The menu shortcut keys shown at the right of NEdit menu items can also be
- changed via X resources. Each menu item has two resources associated with it,
- accelerator, the event to trigger the menu item; and acceleratorText, the
- string shown in the menu. The form of the accelerator resource is the same as
- events for translation table entries discussed above, though multiple keys and
- other subtleties are not allowed. The resource name for a menu is the title in
- lower case, followed by "Menu", the resource name of menu item is the name in
- lower case, run together, with words separated by caps, and all punctuation
- removed. For example, to change Cut to Ctrl+X, you would add the following to
- your .Xdefaults file:
-
- nedit*editMenu.cut.accelerator: Ctrl<Key>x
- nedit*editMenu.cut.acceleratorText: Ctrl+X
-
- Accelerator keys with optional shift key modifiers, like Find..., have an
- additional accelerator resource with Shift appended to the name. For example:
-
- nedit*searchMenu.find.acceleratorText: [Shift]Alt+F
- nedit*searchMenu.find.accelerator: Alt<Key>f
- nedit*searchMenu.findShift.accelerator: Shift Alt<Key>f
-
-
- ACTION ROUTINES
-
- All of the editing capabilities of NEdit are represented as a special type of
- subroutine, called an action routine, which can be invoked from both macros and
- translation table entries (see "Binding Keys to Actions" in the X Resources
- section below).
-
-
- Actions Representing Menu Commands:
-
- File Menu Search Menu
- --------------------- -----------------------
- new() find()
- open() find-dialog()
- open-dialog() find-again()
- open-selected() find-selection()
- close() replace()
- save() replace-dialog()
- save-as() replace-all()
- save-as-dialog() replace-in-selection()
- revert-to-saved() replace-again()
- include-file() goto-line-number()
- include-file-dialog () goto-line-number-dialog()
- load-tags-file() goto-selected()
- load-tags-file-dialog() mark()
- print() mark-dialog()
- print-selection() goto-mark()
- exit() goto-mark-dialog()
- match()
- find-definition()
- split-window()
- Edit Menu close-pane()
- ---------------------
- undo() Shell Menu
- redo() -----------------------
- delete() filter-selection-dialog()
- select-all() filter-selection()
- shift-left() execute-command()
- shift-left-by-tab() execute-command-dialog()
- shift-right() execute-command-line()
- shift-right-by-tab() shell-menu-command()
- uppercase()
- lowercase() Macro Menu
- fill-paragraph() -----------------------
- control-code-dialog() macro-menu-command()
-
- The actions representing menu commands are named the same as the menu item with
- punctuation removed, all lower case, and dashes replacing spaces. Without the
- -dialog suffix, commands which normally prompt the user for information,
- instead take the information from the routine's arguments (see below). To
- present a dialog and ask the user for input, rather than supplying it in via
- arguments, use the actions with the -dialog suffix.
-
- Menu Action Routine Arguments:
-
- Arguments are text strings enclosed in quotes. Below are the menu action
- routines which take arguments. Optional arguments are inclosed in [].
-
- open(filename)
-
- save-as(filename)
-
- include(filename)
-
- load-tags-file(filename)
-
- find-dialog([search-direction])
-
- find(search-string [, search-direction], [search-type])
-
- find-again([search-direction])
-
- find-selection([search-direction])
-
- replace-dialog([search-direction])
-
- replace(search-string, replace-string, [, search-direction] [, search-type])
-
- replace-in-selection(search-string, replace-string [, search-type])
-
- replace-again([search-direction])
-
- goto-line-number([line-number])
-
- mark(mark-letter)
-
- goto-mark(mark-letter)
-
- filter-selection(shell-command)
-
- execute-command(shell-command)
-
- shell-menu-command(shell-menu-item-name)
-
- macro-menu-command(macro-menu-item-name)
-
- Some notes on argument types above:
-
- filename Path names are interpreted relative to the directory
- from which NEdit was started, wildcards and ~ are not
- expanded.
-
- search-direction Either "forward" or "backward"
-
- search-type Either "literal", "case", or "regex"
-
- mark-letter The mark command limits users to single letters.
- Inside of macros, numeric marks are allowed, which
- won't interfere with marks set by the user.
-
- (macro or shell) Name of the command exactly as specified in the Macro
- -menu-item-name Commands or Shell Commands dialogs
-
- Keyboard-Only Actions
-
- backward-character()
- Moves the cursor one character to the left.
-
- backward-paragraph()
- Moves the cursor to the beginning of the paragraph, or if the cursor is already
- at the beginning of a paragraph, moves the cursor to the beginning of the
- previous paragraph. Paragraphs are defined as regions of text delimited by one
- or more blank lines.
-
- backward-word()
- Moves the cursor to the beginning of a word, or, if the cursor is already at
- the beginning of a word, moves the cursor to the beginning of the previous
- word. Word delimiters are user-settable, and defined by the X resource
- wordDelimiters.
-
- beginning-of-file()
- Moves the cursor to the beginning of the file.
-
- beginning-of-line()
- Moves the cursor to the beginning of the line.
-
- beginning-of-selection()
- Moves the cursor to the beginning of the selection without disturbing the
- selection.
-
- copy-clipboard()
- Copies the current selection to the clipboard.
-
- copy-primary()
- Copies the primary selection to the cursor.
-
- copy-to()
- If a secondary selection exists, copies the secondary selection to the cursor.
- If no secondary selection exists, copies the primary selection to the pointer
- location.
-
- copy-to-or-end-drag()
- Completes either a secondary selection operation, or a primary drag. If the
- user is dragging the mouse to adjust a secondary selection, the selection is
- copied and either inserted at the cursor location, or, if pending-delete is on
- and a primary selection exists in the window, replaces the primary selection.
- If the user is dragging a block of text (primary selection), completes the drag
- operation and leaves the text at it's current location.
-
- cut-clipboard()
- Deletes the text in the primary selection and places it in the clipboard.
-
- cut-primary()
- Copies the primary selection to the cursor and deletes it at its original
- location.
-
- delete-selection()
- Deletes the contents of the primary selection.
-
- delete-next-character()
- If a primary selection exists, deletes its contents. Otherwise, deletes the
- character following the cursor.
-
- delete-previous-character()
- If a primary selection exists, deletes its contents. Otherwise, deletes the
- character before the cursor.
-
- delete-next-word()
- If a primary selection exists, deletes its contents. Otherwise, deletes the
- word following the cursor.
-
- delete-previous-word()
- If a primary selection exists, deletes its contents. Otherwise, deletes the
- word before the cursor.
-
- delete-to-start-of-line()
- If a primary selection exists, deletes its contents. Otherwise, deletes the
- characters between the cursor and the start of the line.
-
- delete-to-end-of-line()
- If a primary selection exists, deletes its contents. Otherwise, deletes the
- characters between the cursor and the end of the line.
-
- deselect-all()
- De-selects the current selection.
-
- end-of-file()
- Moves the cursor to the end of the file.
-
- end-of-line()
- Moves the cursor to the end of the line.
-
- end-of-selection()
- Moves the cursor to the end of the selection without disturbing the selection.
-
- exchange()
- Exchange the primary and secondary selections.
-
- extend-adjust()
- Attached mouse-movement events to begin a selection between the cursor and the
- mouse, or extend the primary selection to the mouse position.
-
- extend-end()
- Completes a primary drag-selection operation.
-
- extend-start()
- Begins a selection between the cursor and the mouse. A drag-selection
- operation can be started with either extend-start or grab-focus.
-
- forward-character()
- Moves the cursor one character to the right.
-
- forward-paragraph()
- Moves the cursor to the beginning of the next paragraph. Paragraphs are
- defined as regions of text delimited by one or more blank lines.
-
- forward-word()
- Moves the cursor to the beginning of the next word. Word delimiters are
- user-settable, and defined by the X resource wordDelimiters.
-
- grab-focus()
- Moves the cursor to the mouse pointer location, and prepares for a possible
- drag-selection operation (bound to extend-adjust), or multi-click operation (a
- further grab-focus action). If a second invocation of grab focus follows
- immediately, it selects a whole word, or a third, a whole line.
-
- insert-string("string")
- If pending delete is on and the cursor is inside the selection, replaces the
- selection with "string". Otherwise, inserts "string" at the cursor location.
-
- key-select("direction")
- Moves the cursor one character in "direction" ("left", "right", "up", or "down")
- and extends the selection. Same as: forward/backward-character("extend"), or
- process-up/down("extend"), for compatibility with previous versions.
-
- move-destination()
- Moves the cursor to the pointer location without disturbing the selection.
- (This is an unusual way of working. We left it in for compatibility with
- previous versions, but if you actually use this capability, please send us some
- mail, otherwise it is likely to disappear in the future.
-
- move-to()
- If a secondary selection exists, deletes the contents of the secondary
- selection and inserts it at the cursor, or if pending-delete is on and there is
- a primary selection, replaces the primary selection. If no secondary selection
- exists, moves the primary selection to the pointer location, deleting it from
- its original position.
-
- move-to-or-end-drag()
- Completes either a secondary selection operation, or a primary drag. If the
- user is dragging the mouse to adjust a secondary selection, the selection is
- deleted and either inserted at the cursor location, or, if pending-delete is on
- and a primary selection exists in the window, replaces the primary selection.
- If the user is dragging a block of text (primary selection), completes the drag
- operation and deletes the text from it's current location.
-
- newline()
- Inserts a newline character. If Auto Indent is on, lines up the indentation of
- the cursor with the current line.
-
- newline-and-indent()
- Inserts a newline character and lines up the indentation of the cursor with the
- current line, regardless of the setting of Auto Indent.
-
- newline-no-indent()
- Inserts a newline character, without automatic indentation, regardless of the
- setting of Auto Indent.
-
- next-page()
- Moves the cursor and scroll forward one page.
-
- page-left()
- Move the cursor and scroll left one page.
-
- page-right()
- Move the cursor and scroll right one page.
-
- paste-clipboard()
- Insert the contents of the clipboard at the cursor, or if pending delete is on,
- replace the primary selection with the contents of the clipboard.
-
- previous-page()
- Moves the cursor and scroll backward one page.
-
- process-bdrag()
- Same as secondary-or-drag-start for compatibility with previous versions.
-
- process-cancel()
- Cancels the current extend-adjust, secondary-adjust, or
- secondary-or-drag-adjust in progress.
-
- process-down()
- Moves the cursor down one line.
-
- process-return()
- Same as newline for compatibility with previous versions.
-
- process-shift-down()
- Same as process-down("extend") for compatibility with previous versions.
-
- process-shift-up()
- Same as process-up("extend") for compatibility with previous versions.
-
- process-tab()
- If tab emulation is turned on, inserts an emulated tab, otherwise inserts a tab
- character.
-
- process-up()
- Moves the cursor up one line.
-
- secondary-adjust()
- Attached mouse-movement events to extend the secondary selection to the mouse
- position.
-
- secondary-or-drag-adjust()
- Attached mouse-movement events to extend the secondary selection, or reposition
- the primary text being dragged. Takes two optional arguments, "copy", and
- "overlay". "copy" leaves a copy of the dragged text at the site at which the
- drag began. "overlay" does the drag in overlay mode, meaning the dragged text
- is laid on top of the existing text, obscuring and ultimately deleteing it when
- the drag is complete.
-
- secondary-or-drag-start()
- To be attached to a mouse down event. Begins drag selecting a secondary
- selection, or dragging the contents of the primary selection, depending on
- whether the mouse is pressed inside of an existing primary selection.
-
- secondary-start()
- To be attached to a mouse down event. Begin drag selecting a secondary
- selection.
-
- select-all()
- Select the entire file.
-
- self-insert()
- To be attached to a key-press event, inserts the character equivalent of the
- key pressed.
-
- Arguments to Keyboard Action Routines
-
- In addition to the arguments listed in the call descriptions, any routine
- involving cursor movement can take the argument "extend", meaning, adjust the
- primary selection to the new cursor position. Routines which take the "extend"
- argument as well as mouse dragging operations for both primary and secondary
- selections can take the optional keyword "rect", meaning, make the selection
- rectangular.
-
-
- SOLUTIONS TO COMMON PROBLEMS
-
- P: No files are shown in the "Files" list in the Open... dialog.
- S: When you use the "Filter" field, include the file specification or a
- complete directory specification, including the trailing "/" on Unix. (See
- Help in the Open... dialog).
-
- P: Keyboard shortcuts for menu items don't work.
- S: Be sure the Caps Lock and Num Lock keys are both unlocked. In Motif
- programs, these keys prevent the menu accelerators from working.
-
- P: Find Again and Replace Again don't continue in the same direction as the
- original Find or Replace.
- S: Find Again and Replace Again don't use the direction of the original search.
- The Shift key controls the direction: Ctrl+G means forward, Shift+Ctrl+G
- means backward.
-
- P: Preferences specified in the Preferences menu don't seem to get saved when I
- select Save Defaults.
- S: NEdit has two kinds of preferences: 1) per-window preferences, in the
- Preferences menu, and 2) default settings for preferences in newly created
- windows, in the Default Settings sub-menu of the Preferences menu. Per-
- window preferences are not saved by Save Defaults, only Default Settings.
-
- P: Columns and indentation don't line up.
- S: NEdit is using a proportional width font. Set the font to a fixed style
- (see Preferences).
-
- P: NEdit performs poorly on very large files.
- S: Turn off Incremental Backup. With Incremental Backup on, NEdit periodically
- writes a full copy of the file to disk.
-
- P: Commands added to the Shell Commands menu (Unix only) don't output anything
- until they are finished executing.
- S: If the command output is directed to a dialog, or the input is from a
- selection, output is collected together and held until the command
- completes. De-select both of the options and the output will be shown
- incrementally as the command executes.
-
- P: Dialogs don't automatically get keyboard focus when they pop up.
- S: Most X Window managers allow you to choose between two categories of
- keyboard focus models: pointer focus, and explicit focus. Pointer focus
- means that as you move the mouse around the screen, the window under the
- mouse automatically gets the keyboard focus. NEdit users who use this focus
- model should set "Popups Under Pointer" in the Default Settings sub menu of
- the preferences menu in NEdit. Users with the explicit focus model, in some
- cases, may have problems with certain dialogs, such as Find and Replace. In
- MWM this is caused by the mwm resource startupKeyFocus being set to False
- (generally a bad choice for explicit focus users). NCDwm users should use
- the focus model "click" instead of "explicit", again, unless you have set it
- that way to correct specific problems, this is the appropriate setting for
- most explicit focus users.
-
-
- KNOWN BUGS
-
- Below is the list of known bugs which affect NEdit. The bugs your copy of
- NEdit will exhibit depend on which system you are running and with which Motif
- libraries it was built. Note that there are now Motif 1.2 / X11R5 libraries
- available on ALL supported platforms, and as you can see below there are far
- fewer bugs in Motif 1.2, so it is in your best interest to upgrade your system.
-
- All Versions
-
- BUG: Operations between rectangular selections on overlapping lines do nothing.
- WORKAROUND: None. These operations are very complicated and rarely used, maybe
- next version.
-
- BUG: Cut and Paste menu items fail, or possibly crash, for very large
- (multi-megabyte) selections.
- WORKAROUND: Use selection copy (middle mouse button click) for transferring
- larger quantities of data. Cut and Paste save the copied text in server
- memory, which is usually limited.
-
- Motif 1.1 Versions
-
- BUG: The shortcut method for entering control characters (Alt+Ctrl+char) is not
- available.
- WORKAROUND: Use the Ins. Control Char command.
-
- BUG: Pop-up dialogs "jump" (appear briefly in a different location) when they
- are first invoked.
- WORKAROUND: Turn off "Popups Under Pointer" if this gives you a headache.
-
- VMS Versions
-
- BUGS: 1. Abbreviation of command line qualifiers is not allowed.
- 2. Error messages for mistakes on the command line don't make sense.
- WORKAROUND: NEdit does not parse its command line with the standard DCL command
- parser, instead, it superficially converts the command line to a
- Unix-style command line before processing it. Because information is
- lost, NEdit may not always be able to distinguish between items that are
- supposed to be qualifiers and those which are supposed to be files and
- arguments to the qualifiers. However, correct VMS command lines are
- always processed correctly, and only certain types of errors will appear
- to give strange results.
-
- BUG: Protection settings for new versions of files produced by NEdit over
- DECNET connections may revert to defaults.
- WORKAROUND: Check and reset protections when accessing files via DECNET.
-
- IBM Versions built with Motif 1.1
-
- BUG: The Command to set the font for the current window is not available.
- WORKAROUND: Use the Default Settings sub-menu to set the default font and then
- create a new window.
-
- BUG: NEdit can occasionally crash on window closing.
- WORKAROUND: Save files frequently, see Crash Recovery.
-
-
- MAILING LIST
-
- There are now two separate mailing lists for NEdit users. nedit_discuss, as the
- name implies, is for open discussion among NEdit users. nedit_announces
- intended to be a very low volume mailing list for announcement of new versions,
- new executables, and significant contributed software.
-
- To subscribe to nedit_discuss, send a message containing the following line in
- the body of the message (not the subject) to mailserv@fnal.gov:
-
- subscribe nedit_discuss
-
- To subscribe to nedit_announce, send a separate message to mailserv@fnal.gov
- containing the line:
-
- subscribe nedit_announce
-
- To unsubscribe, send:
-
- unsubscribe nedit_discuss (or nedit_announce)
-
- After subscribing, you will receive copies of all of the email submitted to the
- list. You may submit mail to the discussion list by sending it to:
-
- nedit_discuss@fnal.gov
-
- Users are allowed to post to nedit_announce as well (just make sure that the
- content is appropriate).
-
-
- DISTRIBUTION POLICY
-
- FermiTools Software Legal Information - November 1, 1996
-
- COPYRIGHT STATUS: Fermi National Accelerator Laboratory (FNAL) documents are
- sponsored by the U.S. Department of Energy under Contract No.
- DE-AC02-76CH03000. Therefore, the U.S. Government retains a non-exclusive,
- royalty-free license to publish or reproduce these documents or software for
- U.S. Government purposes. All documents and software available from this
- server are protected under the U.S. and Foreign Copyright Laws, and FNAL
- reserves all rights.
-
- Terms and Conditions
-
- When a User distributes or otherwise obtains a software package included in
- the Fermilab Software Tools Program, the user agrees to abide by the Terms and
- Conditions of the Program below:
-
- o Any redistribution of the software shall be accompanied by this
- INFORMATION/LICENSE AGREEMENT and the product's ORIGIN STATEMENT (below).
-
- o The User shall acknowledge the origin of the software as set forth
- below:
-
- "This work was performed at Fermi National Accelerator Laboratory,
- operated by Universities Research Association, Inc., under contract
- DE-AC02-76CH03000 with the U.S. Department of Energy."
-
- o The user is asked to feed back problems, benefits, and/or suggestions
- about the software to the Fermilab Software Providers and/or FermiTools
- management.
-
- o Any distribution of the software available from this server shall be at
- no charge. To obtain a license to commercialize any of the software
- programs available from Fermilab including this software, contact FNAL's
- Office of Research and Technology Applications, P.O. Box 500, MS-200,
- Batavia, IL 60510-0500.
-
- Indemnification by User of Third Party Claims and Disclosure of Liability
-
- The User, his/her directors, officers, employees, and agents hereby release
- and waive all claims against Universities Research Association, Inc. (URA)
- operator of Fermi National Accelerator Laboratory, its trustees, overseers,
- directors, officers, employees, agents, subcontractors, successors and
- assigns, for any and all liability and damages arising from the reproduction,
- use or other disposition of the software. The User shall indemnify URA and
- the U.S. Government for all damages, costs or expenses, including attorney's
- fees, arising from the utilization of the software, including, but not limited
- to, the making, using, selling or exporting of products, processes or services
- derived from the Software. The User agrees to indemnify, hold harmless and
- defend URA, its trustees, overseers, directors, officers, employees, agents,
- subcontractors, successors and assigns, against any and all liability, damage,
- loss, cost, charge, claim, demand, fee or expense of every nature and kind
- which may at any time hereafter, be sustained by URA by reason of claims of
- third parties arising out of alleged acts or omissions of the User in the
- reproduction, use or other disposition of the Software.
-
- The User agrees that URA, its trustees, overseers, directors, officers,
- employees, agents, subcontractors, successors and assigns shall not be liable
- under any claim, charge, or demand, whether in contract, tort, criminal law,
- or otherwise, for any and all loss, cost, charge, claim, demand, fee, expense,
- or damage of every nature and kind arising out of, connected with, resulting
- from or sustained as a result of the use of the software programs available
- from this server. In no event shall URA be liable for special, direct,
- indirect or consequential damages, losses, costs, charges, claims, demands,
- fees or expenses of any nature or kind.
-
- Disclaimer of Warranties
-
- The software is provided on an "as is" basis only. URA makes no
- representations, express or implied. URA makes no representations or
- warranties of merchantability or fitness for any particular purpose, or
- assumes any legal liability or responsibility for the accuracy, completeness,
- or usefulness of any information, apparatus, product or process disclosed, or
- represents that the Software will not infringe any privately held patent,
- copyright, or trademark. The entire risk as to the results and the
- performance of this software is assumed by the User.
-
- Disclaimer of Endorsement
-
- Reference herein to any specific commercial products, process, or service by
- tradename, trademark, manufacturer or otherwise, does not constitute or imply
- its endorsement, recommendation, or favoring by the United States Government,
- U.S. Department of Energy or URA. The views and opinions of individuals
- expressed herein do not necessarily state or reflect those of the United
- States Government, U.S. Department of Energy or URA and shall not be used for
- advertising or product endorsement purposes.
-
- Liabilities of the Government
-
- This software is provided by URA, independent from its Prime Contract with the
- U.S. Department of Energy. URA is acting independently from the Government
- and in its own private capacity and is not acting on behalf of the U.S.
- Government, nor as its contractor nor its agent. Correspondingly, it is
- understood and agreed that the U.S. Government has no connection to this
- software and in no manner whatsoever shall be liable for nor assume any
- responsibility or obligation for any claim, cost, or damages arising out of or
- resulting from the use of the software available from this server.
-
- ORIGIN STATEMENT
-
- Authors
-
- Mark Edel, Joy Kyriakopulos, Arnulfo Zepeda-Navratil, Suresh Ravoor, Donna Reid,
- Jeff Kallenbach
-
- Fermi National Accelerator Laboratory
- MS 234
- P.O.Box 500
- Batavia, IL 60510
-
- Acknowledgement:
-
- Regular expression code by Henry Spencer
-
- Nedit incorporates an altered version of Henry Spencer's regcomp and regexec
- code adapted for NEdit. Original copyright notice:
-
- Copyright (c) 1986 by University of Toronto. Written by Henry Spencer. Not
- derived from licensed software.
-
- Permission is granted to anyone to use this software for any purpose on any
- computer system, and to redistribute it freely, subject to the following
- restrictions:
-
- 1. The author is not responsible for the consequences of use of this software,
- no matter how awful, even if they arise from defects in it.
-
- 2. The origin of this software must not be misrepresented, either by explicit
- claim or by omission.
-
- 3. Altered versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
-
- End of INFORMATION/LICENSE AGREEMENT FOR NEDIT.
-